package com.ws.boot.demo.validate.service.method.parameter.impl;

import com.google.common.util.concurrent.MoreExecutors;
import com.ws.boot.demo.validate.entity.IdCard;
import com.ws.boot.demo.validate.entity.Person;
import com.ws.boot.demo.validate.service.method.parameter.MethodParameterForBaseDataTypeService;
import com.ws.boot.validate.annotation.constraint.Mobile;
import com.ws.boot.web.domain.DefaultResponse;
import org.springframework.stereotype.Service;

import javax.validation.constraints.*;

/**
 * 方法参数 业务类 ： 基本数据类型，包括 八种基本数据类型 + 包装类 + String + 自定义 Bean 实现类 .
 *
 * @className: MethodParameterForBaseDataTypeServiceImpl
 * @author: ws
 * @date: 2020/4/2 10:16
 * @version: 1.0.0
 */
@Service
public class MethodParameterForBaseDataTypeServiceImpl
        implements MethodParameterForBaseDataTypeService {

    /**
     * 基本数据类型，不带校验 .
     *
     * @param age
     * @param sex
     * @param readonly
     * @return DefaultResponse
     * @author ws
     * @date 2020/4/2 10:16
     **/
    @Override
    public DefaultResponse baseDataTypeWithoutValidation(int age, char sex
            , Boolean readonly) {
        return DefaultResponse.success();
    }

    /**
     * 基本数据类型，带校验 .
     *
     * @param age
     * @param sex
     * @param success
     * @param readonly
     * @return DefaultResponse
     * @author ws
     * @date 2020/4/2 10:15
     **/
    @Override
    public DefaultResponse baseDataType(@NotNull @Min(18) int age, @NotNull char sex
            , Boolean success, @NotNull Boolean readonly) {
        return DefaultResponse.success();
    }

    /**
     * string 类型 .
     *
     * @param username
     * @param mobile
     * @return DefaultResponse
     * @author ws
     * @date 2020/4/2 13:46
     **/
    @Override
    public DefaultResponse string(@NotBlank String username, @Mobile String mobile) {
        return DefaultResponse.success();
    }

    /**
     * 基本数据类型 + 包装类 + String + 自定义 Bean .
     *
     * @param age
     * @param readonly
     * @param username
     * @param person
     * @param password
     * @param idCard
     * @return DefaultResponse
     * @author ws
     * @date 2020/4/2 13:46
     **/
    @Override
    public DefaultResponse baseDataTypeWithStringWithPOJO(@NotNull @Max(200) int age
            , @NotNull Boolean readonly, @NotBlank String username, @NotNull Person person
            , String password, @Null IdCard idCard) {
        return DefaultResponse.success();
    }


}
